
package Algoritmo;

/** Interfaz que contentrá todos los servicios
 * que requerirán los algoritmos para poder mostrar los
 * pasos y el estado del algoritmo
 *
 * @author robertoanzaldua
 */

public interface ServiciosAlgoritmo {



    /**Nos regresa un arreglo con los pesos de las aristas
     *
     * @return int[][] el arreglo con los pesos.
     */
    public int[][] getPesos();


    /**Borra lo contenido en el panel de desarrollo
     *
     */
    public void borraDesarrollo();



    /**Agrega los pasos al panel, dependiendo del algoritmo que se le pase
     * de parámetro
     *
     * @param alg La carpeta que contiene las etiquetas para el algoritmo actual
     */
    public void agregaPasos(String alg);


    /**Agrega un suceso al desarrollo del algoritmo.
     *
     * @param suceso La cadena que contiene el suceso
     */
    public void agregaADesarrollo(String suceso);

    /**Determina si el paso i es el paso actual del algoritmo.
     *
     * @param i - El paso que se desea saber si es el actual.
     * @return <code>boolean</code> que determina el estado del paso.
     */
    public boolean esActual(int i);

     /**Cambia la etiqueta del paso actual al siguiente.
     *
     * @param a El número de paso actual
     * @param b El número de paso al que se desea pasar
     */
    public void cambiaPaso(int a, int b);



    /**Desactiva el paso que se le pasa de parámetro
     *
     * @param a El número del paso a desactivar
     */
    public void desactiva(int a);

    /**Determina si el paso i es el actual en el algoritmo.
     *
     * @param i - El paso que se desea saber si es nulo.
     * @return <code>Boolean</code>, indica si el paso está marcado.
     */
    public boolean nulo(int i);


    /**Marca un vértice del color indicado.
     *
     * @param i - El número del vértice a marcar.
     * @param c - El color del vértice.
     */
    public void marcaVertice(int i, String c);

    /**Envía un mensaje al usuario.
     *
     * @param mensaje - El mensaje a enviar.
     */
    public void enviaMensaje(String mensaje);

    /**Dibuja la gráfica actual
     *
     */
    public void dibuja();

    /**Dibuja la gráfica s representada en el lenguaje de graphviz
     *@param s la gráfica representada en el lenguaje de graphviz
     */
    public void dibuja(String s);

}
